package org.jasig.cas.authentication.principal;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

/**
 * UsernamePasswordCredentials respresents the username and password that a user
 * may provide in order to prove the authenticity of who they say they are.
 * 
 * @author Scott Battaglia
 * @version $Revision: 1.2 $ $Date: 2007/01/22 20:35:26 $
 * @since 3.0
 *        <p>
 *        This is a published and supported CAS Server 3 API.
 *        </p>
 */
public class UsernamePasswordCredentials implements Credentials {

	/** Unique ID for serialization. */
	private static final long serialVersionUID = -8343864967200862794L;

	/** The username. */
	@NotNull
	@Size(min = 1, message = "required.username")
	private String username;

	/** The password. */
	@NotNull
	@Size(min = 1, message = "required.password")
	private String password;

	/**
	 * 验证码
	 */
	private String captcha;
	
	/**
	 * 登录类型 - 第三方登录 、非第三方登录 
	 */
	private String loginType;

	/**
	 * 是否选择了覆盖登录
	 */
	private String overideLogin;

	private String ip;

	/**
	 * @return Returns the password.
	 */
	public final String getPassword() {
		return this.password;
	}

	/**
	 * @param password
	 *            The password to set.
	 */
	public final void setPassword(final String password) {
		this.password = password;
	}

	/**
	 * @return Returns the userName.
	 */
	public final String getUsername() {
		return this.username;
	}

	/**
	 * @param userName
	 *            The userName to set.
	 */
	public final void setUsername(final String userName) {
		this.username = userName;
	}

	public String toString() {
		return "[username: " + this.username + "]";
	}

	@Override
	public boolean equals(final Object o) {
		if (this == o)
			return true;
		if (o == null || getClass() != o.getClass())
			return false;

		UsernamePasswordCredentials that = (UsernamePasswordCredentials) o;
		if (password != null ? !password.equals(that.password) : that.password != null)
			return false;
		if (username != null ? !username.equals(that.username) : that.username != null)
			return false;
		return true;
	}

	@Override
	public int hashCode() {
		int result = username != null ? username.hashCode() : 0;
		result = 31 * result + (password != null ? password.hashCode() : 0);
		return result;
	}

	public String getOverideLogin() {
		return overideLogin;
	}

	public void setOverideLogin(String overideLogin) {
		this.overideLogin = overideLogin;
	}

	public String getCaptcha() {
		return captcha;
	}

	public void setCaptcha(String captcha) {
		this.captcha = captcha;
	}

	public String getIp() {
		return ip;
	}

	public void setIp(String ip) {
		this.ip = ip;
	}
	
	public String getLoginType() {
		return loginType;
	}

	public void setLoginType(String loginType) {
		this.loginType = loginType;
	}
}
